<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>后台管理-登陆</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta http-equiv="Access-Control-Allow-Origin" content="*">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="format-detection" content="telephone=no">
    <link rel="stylesheet" href="./lib/layui-v2.6.3/css/layui.css" media="all">
    <!--[if lt IE 9]>
    <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
    <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
    <style>
        .main-body {top:50%;left:50%;position:absolute;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);transform:translate(-50%,-50%);overflow:hidden;}
        .login-main .login-bottom .center .item input {display:inline-block;width:227px;height:22px;padding:0;position:absolute;border:0;outline:0;font-size:14px;letter-spacing:0;}
        .login-main .login-bottom .center .item .icon-1 {background:url(./images/icon-login.png) no-repeat 1px 0;}
        .login-main .login-bottom .center .item .icon-2 {background:url(./images/icon-login.png) no-repeat -54px 0;}
        .login-main .login-bottom .center .item .icon-3 {background:url(./images/icon-login.png) no-repeat -106px 0;}
        .login-main .login-bottom .center .item .icon-4 {background:url(./images/icon-login.png) no-repeat 0 -43px;position:absolute;right:-10px;cursor:pointer;}
        .login-main .login-bottom .center .item .icon-5 {background:url(./images/icon-login.png) no-repeat -55px -43px;}
        .login-main .login-bottom .center .item .icon-6 {background:url(./images/icon-login.png) no-repeat 0 -93px;position:absolute;right:-10px;margin-top:8px;cursor:pointer;}
        .login-main .login-bottom .tip .icon-nocheck {display:inline-block;width:10px;height:10px;border-radius:2px;border:solid 1px #9abcda;position:relative;top:2px;margin:1px 8px 1px 1px;cursor:pointer;}
        .login-main .login-bottom .tip .icon-check {margin:0 7px 0 0;width:14px;height:14px;border:none;background:url(./images/icon-login.png) no-repeat -111px -48px;}
        .login-main .login-bottom .center .item .icon {display:inline-block;width:33px;height:22px;}
        .login-main .login-bottom .center .item {width:288px;height:35px;border-bottom:1px solid #dae1e6;margin-bottom:35px;}
        .login-main {width:428px;position:relative;float:left;}
        .login-main .login-top {height:117px;background-color:#148be4;border-radius:12px 12px 0 0;font-family:SourceHanSansCN-Regular;font-size:30px;font-weight:400;font-stretch:normal;letter-spacing:0;color:#fff;line-height:117px;text-align:center;overflow:hidden;-webkit-transform:rotate(0);-moz-transform:rotate(0);-ms-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0);}
        .login-main .login-top .bg1 {display:inline-block;width:74px;height:74px;background:#fff;opacity:.1;border-radius:0 74px 0 0;position:absolute;left:0;top:43px;}
        .login-main .login-top .bg2 {display:inline-block;width:94px;height:94px;background:#fff;opacity:.1;border-radius:50%;position:absolute;right:-16px;top:-16px;}
        .login-main .login-bottom {width:428px;background:#fff;border-radius:0 0 12px 12px;padding-bottom:53px;}
        .login-main .login-bottom .center {width:288px;margin:0 auto;padding-top:40px;padding-bottom:15px;position:relative;}
        .login-main .login-bottom .tip {clear:both;height:16px;line-height:16px;width:288px;margin:0 auto;}
        body {background:url(./images/loginbg.png) 0% 0% / cover no-repeat;position:static;font-size:12px;}
        input::-webkit-input-placeholder {color:#a6aebf;}
        input::-moz-placeholder {/* Mozilla Firefox 19+ */            color:#a6aebf;}
        input:-moz-placeholder {/* Mozilla Firefox 4 to 18 */            color:#a6aebf;}
        input:-ms-input-placeholder {/* Internet Explorer 10-11 */            color:#a6aebf;}
        input:-webkit-autofill {/* 取消Chrome记住密码的背景颜色 */            -webkit-box-shadow:0 0 0 1000px white inset !important;}
        html {height:100%;}
        .login-main .login-bottom .tip {clear:both;height:16px;line-height:16px;width:288px;margin:0 auto;}
        .login-main .login-bottom .tip .login-tip {font-family:MicrosoftYaHei;font-size:12px;font-weight:400;font-stretch:normal;letter-spacing:0;color:#9abcda;cursor:pointer;}
        .login-main .login-bottom .tip .forget-password {font-stretch:normal;letter-spacing:0;color:#1391ff;text-decoration:none;position:absolute;right:62px;}
        .login-main .login-bottom .login-btn {width:288px;height:40px;background-color:#1E9FFF;border-radius:16px;margin:24px auto 0;text-align:center;line-height:40px;color:#fff;font-size:14px;letter-spacing:0;cursor:pointer;border:none;}
        .login-main .login-bottom .center .item .validateImg {position:absolute;right:1px;cursor:pointer;height:36px;border:1px solid #e6e6e6;}
        .footer {left:0;bottom:0;color:#fff;width:100%;position:absolute;text-align:center;line-height:30px;padding-bottom:10px;text-shadow:#000 0.1em 0.1em 0.1em;font-size:14px;}
        .padding-5 {padding:5px !important;}
        .footer a,.footer span {color:#fff;}
        @media screen and (max-width:428px) {.login-main {width:360px !important;}
            .login-main .login-top {width:360px !important;}
            .login-main .login-bottom {width:360px !important;}
        }
        .captcha_div{
            position: relative;
            display: flex;
        }
        .captcha_div canvas{
            position: absolute;
            right: 0;
        }
    </style>
</head>
<body>
<div class="main-body">
    <div class="login-main">
        <div class="login-top">
            <span id="webname"></span>
            <span class="bg1"></span>
            <span class="bg2"></span>
        </div>
        <form class="layui-form login-bottom" action="" lay-filter="userinfo-filter-data" onsubmit="event.preventDefault();">
            <div class="center">
                <div class="item">
                    <span class="icon icon-2"></span>
                    <input type="text" name="username" lay-verify="required" lay-reqText="登录账号不得为空" value=""  placeholder="请输入登录账号" maxlength="24"/>
                </div>

                <div class="item">
                    <span class="icon icon-3"></span>
                    <input type="password" name="password" lay-verify="required" lay-reqText="登录密码不得为空" value=""  placeholder="请输入密码" maxlength="20">
                    <span class="bind-password icon icon-4"></span>
                </div>

                <div class="captcha_div">
                    <div id="validatePanel" class="item" style="width: 137px;">
                        <input type="text" name="captcha" lay-verify="required" lay-reqText="登录验证码不得为空" placeholder="请输入验证码" maxlength="4">
                    </div>
                    <canvas id="c12" width="100" height="35" style="border:1px solid black"></canvas>
                </div>

            </div>
            <div class="tip">
                <span class="icon-nocheck"></span>
                <span class="login-tip">保持登录</span>
                <a href="javascript:" class="forget-password">忘记密码？</a>
            </div>
            <div class="layui-form-item" style="text-align:center; width:100%;height:100%;margin:0px;">
                <button class="login-btn"  lay-submit lay-filter="login" >立即登录</button>
            </div>
        </form>
    </div>
</div>
<div class="footer">

</div>
<script src="./js/crypto-js.min.js"></script>
<script src="./lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script src="/lay/secrypt-dynamic-script.js" charset="utf-8"></script>
<script>
    layui.use(['form','jquery'], function () {
        var $ = layui.jquery,
            form = layui.form,
            layer = layui.layer;

        var hashPart = window.location.hash;
        var pageAddress = hashPart.substring(1);
        console.log(pageAddress);

        reloadScript('/lay/s-secrypt-script.js',function (){
            secrypt_s_mode.encryptFormData('/sys-config/getwebname',{},function (res){
                console.log(res);
                if(res.code==200){
                    $("#webname").text(res.data.webname);
                }
            });
        })
        // 登录过期的时候，跳出ifram框架
        if (top.location != self.location) top.location = self.location;

        function jsonToFormData(json) {
            const formData = new FormData();
            for (const key in json) {
                if (json.hasOwnProperty(key)) {
                    formData.append(key, json[key]);
                }
            }
            return formData;
        }
        draw('c12');
        let userInfo=localStorage.getItem("userInfo");
        if(userInfo){
            try {
                let info=JSON.parse(userInfo);
                form.val('userinfo-filter-data',info);
                localStorage.removeItem("userInfo");
            }catch (e){

            }
        }
        $('.bind-password').on('click', function () {
            if ($(this).hasClass('icon-5')) {
                $(this).removeClass('icon-5');
                $("input[name='password']").attr('type', 'password');
            } else {
                $(this).addClass('icon-5');
                $("input[name='password']").attr('type', 'text');
            }
        });
        $('.icon-nocheck').on('click', function () {
            if ($(this).hasClass('icon-check')) {
                $(this).removeClass('icon-check');
            } else {
                $(this).addClass('icon-check');
            }
        });
        // 进行登录操作
        form.on('submit(login)', function (data) {
            data = data.field;
            if (data.username == '') {
                layer.msg('用户名不能为空');
                return false;
            }
            if (data.password == '') {
                layer.msg('密码不能为空');
                return false;
            }
            if(data.captcha==''){
                layer.msg('验证码不能为空');
                return false;
            }
            secrypt_mode.login(data.username,data.password,data.captcha,function (response){
                if(response.code==200){
                    localStorage.removeItem("userInfo")
                    localStorage.setItem('sessionId', response.sessionId);
                    layer.msg('登录成功',{icon:1,time:1000}, function () {
                        if(pageAddress){
                            window.location = './index.html#'+pageAddress;
                        }else {
                            window.location = './index.html';
                        }
                    });
                }else {
                    layer.msg(response.message,{icon:2}, function () {
                        let user={username:data.username,password:data.password};
                        let userInfo=JSON.stringify(user);
                        localStorage.setItem('userInfo', userInfo);
                        window.location.reload();
                    });
                }
            });
            return false;
        });

        // 获取所有输入框
        const inputs = document.querySelectorAll('input');

        // 当前焦点的输入框索引
        let currentIndex = 0;
        // 监听键盘事件
        document.addEventListener('keydown', function(event) {
            switch (event.key) {
                case 'ArrowRight': // 右箭头键
                case 'ArrowDown': // 下箭头键
                    currentIndex = (currentIndex + 1) % inputs.length; // 移动到下一个输入框
                    // 设置焦点到当前输入框
                    inputs[currentIndex].focus();
                    break;
                case 'ArrowLeft': // 左箭头键
                case 'ArrowUp': // 上箭头键
                    currentIndex = (currentIndex - 1 + inputs.length) % inputs.length; // 移动到上一个输入框
                    // 设置焦点到当前输入框
                    inputs[currentIndex].focus();
                    break;
            }

        });
        // 初始化焦点到第一个输入框
        inputs[0].focus();
        function draw(id){
            console.log(id);
            const canvas=document.getElementById(id);
            console.log(canvas);
            const ctx = canvas.getContext("2d")
            // 获取画布的宽高
            var canvas_width = canvas.width;
            var canvas_height = canvas.height;
            //  清空之前绘制的内容
            // 0,0清空的起始坐标
            // 矩形的宽高
            ctx.clearRect(0, 0, canvas_width, canvas_height)
            // 开始绘制
            var str=secrypt_mode.getCaCa_t();
            var strArr=str.split('');
            for (var i = 0; i < 4; i++) {
                var txt = strArr[i] //随机一个字符
                // 开始控制字符的绘制位置
                var x = 10 + 20 * i //每一个验证码绘制的起始点x坐标
                var y = 20 + Math.random() * 8 // 起始点y坐标
                ctx.font = "bold 25px 微软雅黑";
                // 开始旋转字符
                var deg = Math.random * -0.5;
                // canvas 要实现绘制内容具有倾斜的效果，必须先平移，目的是把旋转点移动到绘制内容的地方
                ctx.translate(x, y);
                ctx.rotate(deg);
                // 设置绘制的随机颜色
                ctx.fillStyle = randomColor();
                ctx.fillText(txt, 0, 0);
                // 把canvas复原
                ctx.rotate(-deg);
                ctx.translate(-x, -y);
            }
            for (var i = 0; i < 30; i++) {
                if (i < 5) {
                    // 绘制线
                    ctx.strokeStyle = randomColor();
                    ctx.beginPath();
                    ctx.moveTo(Math.random() * canvas_width, Math.random() * canvas_height);
                    ctx.lineTo(Math.random() * canvas_width, Math.random() * canvas_height);
                    ctx.stroke();
                }
                // 绘制点
                ctx.strokeStyle = randomColor();
                ctx.beginPath();
                var x = Math.random() * canvas_width;
                var y = Math.random() * canvas_height;
                ctx.moveTo(x, y);
                ctx.lineTo(x + 1, y + 1);
                ctx.stroke();
            }
        }

        function randomColor(){
            var r = Math.floor(Math.random() * 256)
            var g = Math.floor(Math.random() * 256)
            var b = Math.floor(Math.random() * 256)
            return 'rgb('+r+','+g+','+b+')';
        }

        function reloadScript(src,callback){
            // 找到所有 script 标签
            const scripts = document.querySelectorAll('script');
            scripts.forEach(script => {
                // 找到指定 src 的脚本
                if (script.src === src) {
                    // 移除旧的脚本
                    script.remove();
                }
            });
            // 重新加载脚本
            loadScript(src, function() {
                callback()
            });
        }

        function loadScript(src, callback){
            const script = document.createElement('script');
            script.src = src;
            script.type = 'text/javascript';
            script.onload = callback; // 脚本加载完成后执行回调
            document.head.appendChild(script);
        }



    });
</script>
</body>
</html>